package com.eduagent.xwqeduagent.api.machineTranslation.api;

import com.eduagent.xwqeduagent.api.machineTranslation.TranslationClient;
import com.eduagent.xwqeduagent.api.machineTranslation.model.TranslationLanguage;
import com.eduagent.xwqeduagent.api.machineTranslation.model.TranslationResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import jakarta.annotation.PostConstruct;

/**
 * 机器翻译API
 */
@Slf4j
@Component
public class TranslationApi {

    @Value("${xfyun.translation.appId}")
    private String appId;

    @Value("${xfyun.translation.apiKey}")
    private String apiKey;

    @Value("${xfyun.translation.apiSecret}")
    private String apiSecret;

    private TranslationClient client;

    @PostConstruct
    public void init() {
        if (appId == null || apiKey == null || apiSecret == null ||
            appId.isEmpty() || apiKey.isEmpty() || apiSecret.isEmpty()) {
            log.warn("讯飞机器翻译配置不完整，功能可能无法正常使用");
            return;
        }
        client = new TranslationClient(apiKey, apiSecret, appId);
        log.info("讯飞机器翻译API初始化完成");
    }

    /**
     * 翻译文本
     *
     * @param text     待翻译文本
     * @param fromLang 源语言
     * @param toLang   目标语言
     * @return 翻译结果文本
     */
    public String translate(String text, String fromLang, String toLang) {
        if (text == null || text.trim().isEmpty()) {
            return "";
        }
        
        if (client == null) {
            log.error("翻译客户端未初始化，请检查配置");
            return text;
        }

        try {
            TranslationResponse response = client.translate(text, fromLang, toLang);
            
            if (response.getCode() != 0) {
                log.error("翻译失败: code={}, message={}", response.getCode(), response.getMessage());
                return text;
            }
            
            return response.getData().getResult().getTransResult().getDst();
        } catch (Exception e) {
            log.error("翻译异常", e);
            return text;
        }
    }

    /**
     * 将文本翻译为中文
     *
     * @param text     待翻译文本
     * @param fromLang 源语言
     * @return 中文翻译结果
     */
    public String translateToChinese(String text, String fromLang) {
        return translate(text, fromLang, TranslationLanguage.CHINESE);
    }

    /**
     * 将文本翻译为英文
     *
     * @param text     待翻译文本
     * @param fromLang 源语言
     * @return 英文翻译结果
     */
    public String translateToEnglish(String text, String fromLang) {
        return translate(text, fromLang, TranslationLanguage.ENGLISH);
    }

    /**
     * 将中文翻译为英文
     *
     * @param chineseText 中文文本
     * @return 英文翻译结果
     */
    public String translateChineseToEnglish(String chineseText) {
        return translate(chineseText, TranslationLanguage.CHINESE, TranslationLanguage.ENGLISH);
    }

    /**
     * 将英文翻译为中文
     *
     * @param englishText 英文文本
     * @return 中文翻译结果
     */
    public String translateEnglishToChinese(String englishText) {
        return translate(englishText, TranslationLanguage.ENGLISH, TranslationLanguage.CHINESE);
    }
} 